package com.example.designpatterns.bridge;

/*
* 实现层接口 (MessageSender):
    定义了发送消息的通用接口，具体实现由子类完成。
    实现层的具体实现 (EmailSender, SMSender):
    提供了具体的发送方式，例如电子邮件和短信。
  抽象层 (Message):
    定义了消息的抽象类，包含一个 MessageSender 对象，用于调用具体的发送方式。
  抽象层的具体实现 (TextMessage, ImageMessage):
    具体的消息类型，继承自 Message，并实现了 send 方法。
  客户端代码 (BridgePatternDemo):
    客户端可以根据需要选择不同的消息类型和发送方式，通过组合的方式实现功能的灵活组合。
  总结
    桥接模式的核心在于将抽象和实现分离，使得它们可以独立变化。通过这种方式，可以避免类的爆炸性增长，同时提高代码的可扩展性和灵活性。在实际开发中，桥接模式适用于需要将一个大类拆分成多个层次结构的场景，例如图形绘制、消息发送等
* */
public class BridgePatternDemo {
    public static void main(String[] args) {
        // 使用电子邮件发送文本消息
        MessageSender emailSender = new EmailSender();
        Message textMessage = new TextMessage(emailSender);
        textMessage.send("这是一条文本消息");

        // 使用短信发送图片消息
        MessageSender smsSender = new SMSender();
        Message imageMessage = new ImageMessage(smsSender);
        imageMessage.send("这是一张图片消息");
    }
}